<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>StrangeIoC: strange.extensions.injector.impl.Injector Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">StrangeIoC
   &#160;<span id="projectnumber">0.6.0</span>
   </div>
   <div id="projectbrief">The IoC/Binding Framework for Unity3D and C#</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Properties</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Events</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="namespacestrange.html">strange</a></li><li class="navelem"><a class="el" href="namespacestrange_1_1extensions.html">extensions</a></li><li class="navelem"><a class="el" href="namespacestrange_1_1extensions_1_1injector.html">injector</a></li><li class="navelem"><a class="el" href="namespacestrange_1_1extensions_1_1injector_1_1impl.html">impl</a></li><li class="navelem"><a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html">Injector</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">strange.extensions.injector.impl.Injector Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Supplies injection for all mapped dependencies.  
 <a href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for strange.extensions.injector.impl.Injector:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.png" usemap="#strange.extensions.injector.impl.Injector_map" alt=""/>
  <map id="strange.extensions.injector.impl.Injector_map" name="strange.extensions.injector.impl.Injector_map">
<area href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html" title="Interface for the Injector, which dependencies into provided instances. " alt="strange.extensions.injector.api.IInjector" shape="rect" coords="0,0,235,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:af2e993fb61630c887d378d36b19bac6f"><td class="memItemLeft" align="right" valign="top">object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html#af2e993fb61630c887d378d36b19bac6f">Instantiate</a> (<a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binding.html">IInjectionBinding</a> binding)</td></tr>
<tr class="memdesc:af2e993fb61630c887d378d36b19bac6f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request an instantiation based on the given binding.  <a href="#af2e993fb61630c887d378d36b19bac6f">More...</a><br/></td></tr>
<tr class="separator:af2e993fb61630c887d378d36b19bac6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e68bee15edd6eae305e1e2a4f24ff6c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8e68bee15edd6eae305e1e2a4f24ff6c"></a>
object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html#a8e68bee15edd6eae305e1e2a4f24ff6c">Inject</a> (object target)</td></tr>
<tr class="memdesc:a8e68bee15edd6eae305e1e2a4f24ff6c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request that the provided target be injected. <br/></td></tr>
<tr class="separator:a8e68bee15edd6eae305e1e2a4f24ff6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6df3d7fb5fc7d18a2ca9c2c8e754783"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae6df3d7fb5fc7d18a2ca9c2c8e754783"></a>
object&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html#ae6df3d7fb5fc7d18a2ca9c2c8e754783">Inject</a> (object target, bool attemptConstructorInjection)</td></tr>
<tr class="memdesc:ae6df3d7fb5fc7d18a2ca9c2c8e754783"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request that the provided target be injected. <br/></td></tr>
<tr class="separator:ae6df3d7fb5fc7d18a2ca9c2c8e754783"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadbd3054a566efbcef0fb1cdc3dc3e23"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html#aadbd3054a566efbcef0fb1cdc3dc3e23">Uninject</a> (object target)</td></tr>
<tr class="memdesc:aadbd3054a566efbcef0fb1cdc3dc3e23"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the injections from the provided instance.  <a href="#aadbd3054a566efbcef0fb1cdc3dc3e23">More...</a><br/></td></tr>
<tr class="separator:aadbd3054a566efbcef0fb1cdc3dc3e23"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a3024581ccae080cd97ef911a10bb647c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3024581ccae080cd97ef911a10bb647c"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector_factory.html">IInjectorFactory</a>&#160;</td><td class="memItemRight" valign="bottom"><b>factory</b><code> [get, set]</code></td></tr>
<tr class="separator:a3024581ccae080cd97ef911a10bb647c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad39ca1235e74f3ca1b3a32ccc743029c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad39ca1235e74f3ca1b3a32ccc743029c"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binder.html">IInjectionBinder</a>&#160;</td><td class="memItemRight" valign="bottom"><b>binder</b><code> [get, set]</code></td></tr>
<tr class="separator:ad39ca1235e74f3ca1b3a32ccc743029c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c22eb7e1a08cd5261882a0aa7ed7b38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6c22eb7e1a08cd5261882a0aa7ed7b38"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1reflector_1_1api_1_1_i_reflection_binder.html">IReflectionBinder</a>&#160;</td><td class="memItemRight" valign="bottom"><b>reflector</b><code> [get, set]</code></td></tr>
<tr class="separator:a6c22eb7e1a08cd5261882a0aa7ed7b38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td colspan="2" onclick="javascript:toggleInherit('properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector')"><img src="closed.png" alt="-"/>&#160;Properties inherited from <a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html">strange.extensions.injector.api.IInjector</a></td></tr>
<tr class="memitem:abc1ae4ebd51649ad7c44873d87e76445 inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc1ae4ebd51649ad7c44873d87e76445"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector_factory.html">IInjectorFactory</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html#abc1ae4ebd51649ad7c44873d87e76445">factory</a><code> [get, set]</code></td></tr>
<tr class="memdesc:abc1ae4ebd51649ad7c44873d87e76445 inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get/set an InjectorFactory. <br/></td></tr>
<tr class="separator:abc1ae4ebd51649ad7c44873d87e76445 inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c47c5e51f6b75cc8c3e0897d3aae42a inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5c47c5e51f6b75cc8c3e0897d3aae42a"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binder.html">IInjectionBinder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html#a5c47c5e51f6b75cc8c3e0897d3aae42a">binder</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a5c47c5e51f6b75cc8c3e0897d3aae42a inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get/set an InjectionBinder. <br/></td></tr>
<tr class="separator:a5c47c5e51f6b75cc8c3e0897d3aae42a inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ee8852222538152189f234136a92adf inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6ee8852222538152189f234136a92adf"></a>
<a class="el" href="interfacestrange_1_1extensions_1_1reflector_1_1api_1_1_i_reflection_binder.html">IReflectionBinder</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html#a6ee8852222538152189f234136a92adf">reflector</a><code> [get, set]</code></td></tr>
<tr class="memdesc:a6ee8852222538152189f234136a92adf inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get/set a ReflectionBinder. <br/></td></tr>
<tr class="separator:a6ee8852222538152189f234136a92adf inherit properties_interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Supplies injection for all mapped dependencies. </p>
<p>Extension satisfies injection dependencies. Works in conjuntion with (and therefore relies on) the Reflector.</p>
<p>Dependencies may be Constructor injections (all parameters will be satisfied), or setter injections.</p>
<p>Classes utilizing this injector must be marked with the following metatags: </p>
<ul>
<li>
[<a class="el" href="class_inject.html" title="The [Inject] attribute marks a setter Injection point. ">Inject</a>] - Use this metatag on any setter you wish to have supplied by injection. </li>
<li>
[<a class="el" href="class_construct.html" title="The [Construct] attribute marks a preferred Constructor. ">Construct</a>] - Use this metatag on the specific Constructor you wish to inject into when using Constructor injection. If you omit this tag, the Constructor with the shortest list of dependencies will be selected automatically. </li>
<li>
[<a class="el" href="class_post_construct.html" title="The [PostConstruct] attribute marks one or more methods as PostConstructors. ">PostConstruct</a>] - Use this metatag on any method(s) you wish to fire directly after dependencies are supplied </li>
</ul>
<p>The Injection system is quite loud and specific where dependencies are unmapped, throwing Exceptions to warn you. This is exceptionally useful in ensuring that your app is well structured. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="af2e993fb61630c887d378d36b19bac6f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">object strange.extensions.injector.impl.Injector.Instantiate </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injection_binding.html">IInjectionBinding</a>&#160;</td>
          <td class="paramname"><em>binding</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Request an instantiation based on the given binding. </p>
<p>This request is made to the <a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector.html" title="Supplies injection for all mapped dependencies. ">Injector</a>, but it's really the <a class="el" href="classstrange_1_1extensions_1_1injector_1_1impl_1_1_injector_factory.html" title="The Factory that instantiates all instances. ">InjectorFactory</a> that does the instantiation. </p>

<p>Implements <a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html#ab6c185a183b27708e38c4954195fe591">strange.extensions.injector.api.IInjector</a>.</p>

</div>
</div>
<a class="anchor" id="aadbd3054a566efbcef0fb1cdc3dc3e23"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void strange.extensions.injector.impl.Injector.Uninject </td>
          <td>(</td>
          <td class="paramtype">object&#160;</td>
          <td class="paramname"><em>target</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Clear the injections from the provided instance. </p>
<p>Note that Uninject can only clean public properties...therefore only setters will be uninjected...not injections provided via constructor injection </p>

<p>Implements <a class="el" href="interfacestrange_1_1extensions_1_1injector_1_1api_1_1_i_injector.html#a97ed5ca85ac9043a53ae49122a5dc3ca">strange.extensions.injector.api.IInjector</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>StrangeIoC/scripts/strange/extensions/injector/impl/Injector.cs</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Jan 28 2014 13:07:05 for StrangeIoC by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>
